namespace WpfApp3.Helpers;

using System.Xml;
using System.Xml.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Formatting = Newtonsoft.Json.Formatting;
public class FormatHelper
{
    
    public static bool IsJsonObject(string content)
    {
        try
        {
            // 使用Newtonsoft.Json库的JObject.Parse方法来解析字符串
            JObject.Parse(content);
            return true;
        }
        catch (JsonReaderException)
        {
            // 如果解析过程中出现异常，则说明字符串不是有效的JSON
            return false;
        }
    }
    public static bool IsJsonArray(string content)
    {
        try
        {
            // 使用Newtonsoft.Json库的JObject.Parse方法来解析字符串
            JArray.Parse(content);
            return true;
        }
        catch (JsonReaderException)
        {
            // 如果解析过程中出现异常，则说明字符串不是有效的JSON
            return false;
        }
    }

    public static bool IsXml(string content)
    {
        try
        {
            // 使用System.Xml.Linq的XDocument.Parse方法来解析字符串
            XDocument.Parse(content);
            return true;
        }
        catch (XmlException)
        {
            // 如果解析过程中出现异常，则说明字符串不是有效的XML
            return false;
        }
    }

    public static string FormatJsonArray(string json)
    {
        try
        {
            var formatted = JArray.Parse(json).ToString(Formatting.Indented);
            return formatted;
        }
        catch (JsonReaderException)
        {
            // JSON 解析失败，返回原始字符串
            return json;
        }
    }
    public static string FormatJsonObject(string json)
    {
        try
        {
            var formatted = JObject.Parse(json).ToString(Formatting.Indented);
            return formatted;
        }
        catch (JsonReaderException)
        {
            // JSON 解析失败，返回原始字符串
            return json;
        }
    }

    public static string FormatXml(string xml)
    {
        // 使用System.Xml.Linq的XDocument.Parse方法来解析字符串
        XDocument doc = XDocument.Parse(xml);
        // 使用格式化器来格式化XML
        string formattedXmlString = doc.ToString();
        return formattedXmlString;
    }
}